//package com.subtlman.logframework.controller;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.tomcat.util.threads.ThreadPoolExecutor;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.concurrent.LinkedBlockingDeque;
//
///**
// * @Create: IntelliJ IDEA.
// * @Author: subtlman_ljx
// * @Date: 2022/11/21/10:30
// * @Description:
// */
//@RequestMapping("/api")
//@RestController
//@Api(value = "账号监控平台系统相关接口", tags = {"账号监控平台系统相关接口"})
//@Slf4j
//public class UserDepartmentController {
//
//    private static LinkedBlockingDeque<List<UserLogin>> deque = new LinkedBlockingDeque<>();
//    @Autowired
//    private UserLoginManagementService userLoginManagementService;
//
//    @Autowired
//    private UserLoginService userLoginService;
//    @Autowired
//    private Sid sid;
//
//
//    @ApiOperation(value = "推送用户登录日志接口",notes = "推送用户登录日志接口", httpMethod = "POST")
//    @PostMapping("/userLog/add")
//    public R addUserLogQueue(@Validated @RequestBody List< @Valid UserLogin> list)  {
//        if (list == null || list.isEmpty()) {
//            return R.errorMsg("传数据不能为空");
//        }
//        try {
//            List<DataMsg>   resultList =  new ArrayList<>();  //返回给调用接口集合
//            List<UserLogin>   saveList =  new ArrayList<>();  // 保存数据的list
//            // 判断参数不能为空，
//            for(UserLogin userLogin : list){
//                R   result = ParameterUtil.userParameter(userLogin);
//                if(result.getCode().equals(RStatus.fail.getCode())){
//                    DataMsg  dataMsg = new DataMsg();
//                    BeanUtils.copyProperties(userLogin,dataMsg);
//                    dataMsg.setMessage(result.getMsg());
//                    log.error("【UserDepartmentController -- addUserLog】传入的登录信息数据有空，入参的参数数据：{},消息的提醒：{}",userLogin.toString(),result.getMsg());
//                    resultList.add(dataMsg);
//                }else {
//                    userLogin.setUserId(userLogin.getSystemName()+"-"+userLogin.getUserId());
//                    saveList.add(userLogin);
//                }
//            }
//            if(saveList != null && saveList.size() > 0 ){
//                //  String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//                //log.info("【UserDepartmentController -- addUserLog】传入的登录信息数据，入参的时间：{}，入参的数据:{} ",time, saveList.toString());
//                if(deque.remainingCapacity() > 0){
//                    deque.put(saveList);
//                }else {
//                    return R.errorMsg("队列已经满了,请稍后重试");
//                }
//                SaveUserLogQueueRunnable saveUserLogQueueRunnable = new SaveUserLogQueueRunnable(deque,userLoginService,userLoginManagementService,sid);
//                //刚开始使用多线程，但是如果相同的数据发送多次请求，会导致数据会重复。后面修改上面的方式，单线程去处理。
//                ThreadPoolExecutor cupInstance = ThreadPoolUtils.getCUPInstance();
//                cupInstance.execute(saveUserLogQueueRunnable);
//
//            }
//            if(resultList != null && resultList.size() >0){
//                return R.build(500,"失败",resultList);
//            }else{
//                return R.ok();
//            }
//        }catch (Exception e){
//            e.printStackTrace();
//            return R.errorMsg("请求接口异常");
//        }
//
//    }
//}
